Aqua EnterpriseでECRにあるイメージをスキャンしてみた
こんにちは。コンサルティング部の枡川です。
コンテナとクラウドネイティブアプリのためのセキュリティソリューションである、Aqua Enterpriseでコンテナイメージをスキャンしてみました。
Aquaでイメージスキャンしてみたということで、弊社濱田が記載した下記記事と大筋は一緒となります。
下記が違う点となります。
- ECRのイメージをスキャンしている点
- Image Layersについて試してみた点
脆弱性情報をわかりやすくまとめてくれますし、パッケージマネージャ以外でインストールした一部のライブラリも脆弱性を検知してくれるので最高ですよ!
前提・注意点について
本記事における検証においては、Aqua社から提供いただいたトライアルアカウントを利用しています。
コンテナイメージや、セットアップ用のドキュメントなどは、公式ドキュメントアクセス用のアカウントが必要となりますのでご留意ください。
セットアップについて
今回はDockerを利用してセットアップします。
弊社Todaが記載した下記ブログと同様にセットアップしております。
勢いで無料枠のt2.micro
を使用するとメモリ不足に陥ったりするので気をつけて下さい。
今回は下記インスタンスでセットアップしました。
AMI:AmazonLinux2 x86 (ami-0701e21c502689c31)
インスタンスタイプ:t3.small
ECRとの連携
セットアップ完了後に下図のようなダッシュボードを見ることができます。
ECRと連携したいので、Integrations
をクリックします。
何もしなくてもDocker Hubからはイメージをインストールすることができます。
他のレジストリを追加したいのでAdd Registry
をクリックします。
連携するレジストリの設定を行います。
Access KeyとSecret Keyは設定していませんが、IAMロールをAquaインストール先のEC2インスタンスにアタッチして連携させます。
今回設定したポリシーは下記です。
{ "Version": "2012-10-17", "Statement": [ { "Sid": "ECRScanning", "Effect": "Allow", "Action": [ "ecr:BatchCheckLayerAvailability", "ecr:BatchGetImage", "ecr:DescribeImages", "ecr:DescribeRepositories", "ecr:GetAuthorizationToken", "ecr:GetDownloadUrlForLayer", "ecr:GetRepositoryPolicy", "ecr:ListImages" ], "Resource": "*" } ] }
Test Connection
を押すことで設定を保存する前に接続テストをすることもできます。
イメージスキャンしてみた
ECRがレジストリ一覧に追加されたことを確認して、Images
に移動します。
Add Images
をクリックすると、先程設定したレジストリを選ぶことができます。
イメージとタグを選んでAdd
をクリックします。
今回使用するイメージは下記Dockerfileをイメージ化したものです。
パストラバーサル攻撃の脆弱性があったApache HTTP Server2.4.49に設定ファイルを追加した簡単なものとなります。
FROM httpd:2.4.49 COPY ./httpd.conf /usr/local/apache2/conf/httpd.conf
Scan Queue
では各スキャンの進行状況を確認することができます。
スキャンが失敗した際はRescanで最初からやり直すこともできます。
スキャンが完了したらGeneral
からイメージ名をクリックすることでスキャン結果を確認することができます。
Risk
ではスキャンした日時や脆弱性の数などの概要を確認することができます。
Vulnerabilities
では、検知された各脆弱性情報を確認することができます。
脆弱性の概要や米国脆弱性情報データベース(NVD)へのリンクも確認できます。
Layers
が以前は無かった機能になります。
各イメージのどのレイヤで脆弱性が発生しているのかを確認することができます。
脆弱性が検知された後の対応が楽になりますね!
Resources
ではインストールされているパッケージとバージョンおよび脆弱性情報を一覧で確認できます。
aquaではOSのパッケージマネージャや言語のパッケージマネージャでインストールされたライブラリだけでなく、直接ソースからインストールされたパッケージについても脆弱性を確認することができます!
この機能はApache、GZIP、Java、Mongoなどの主要な500種類のライブラリに適用され、設定で有効化や無効化をすることができます。(私がセットアップした際は最初から有効でした。)
http_server
はType
がExecutable
と表示されていますが、今回のイメージ内でyum
経由でインストールされていないにも関わらず、脆弱性を確認することができています。
他のパッケージはDEB Package
と記載されているのでどのようにインストールされたかもわかります。
最後に
Aqua Enterpriseを使用してECRのイメージをスキャンしてみました。
脆弱性情報をきれいに図示してくれるのでわかりやすいですし、パッケージマネージャでインストールしなくても検出されるのは良いですね。
イメージスキャンだけでなく他にも様々な機能があるのでこれからいろいろ検証してみます!